#ifndef _C_ASSERT_H_
#define _C_ASSERT_H_

#ifdef _WIN32
  #include <windows.h>
#include <assert.h>
#endif

#include "CLogger.h"

namespace common
{
#if _DEBUG
  #define cASSERT( cond ) {if(!(cond)) _asm{int 0x03}}
  #define cASSERT_STRING( cond, str ) {if(!(cond)) _asm{int 0x03}}
#else
  #define cASSERT( cond )
  #define cASSERT_STRING( cond, str )
#endif // _DEBUG


#ifdef _WIN32
#define _cTEST( cond, sFile, iLine ) if( !(cond) ) \
  { g_Logger.error(sFile, iLine, #cond); MessageBox(NULL, sFile, "Test Error" ## #cond ## #iLine, 0); return false; }
#define _cTEST_NO_RETURN( cond, sFile, iLine ) if( !(cond) ) \
  { g_Logger.error(sFile, iLine, #cond); MessageBox(NULL, sFile, "Test Error" ## #cond ## #iLine, 0); }
#endif // _WIN32

#define cTEST( cond ) _cTEST( cond, __FILE__, __LINE__ )
#define cTEST_NO_RETURN( cond ) _cTEST_NO_RETURN( cond, __FILE__, __LINE__ )
}

#endif